In systems-on-chip in particular, functional modules dedicated to handling certain functions of the system are connected to each other and/or to a central processing unit (CPU) via an interconnection bus. This bus ensures the communication of control information and data between the CPU and the functional modules and/or directly between the functional modules, using a determined protocol. This protocol can be sequential or combinational. If sequential, a transaction between a master module and a slave module occurs by exchanging messages called requests and responses. In the second case, the transaction occurs through the use of logic signals, which are set to high or low by logic units using ad-hoc logic gates.
To implement a power management for the system which lowers the total power consumption, the system is organized into separate and independent power domains. The electrical power supplied to such a domain can therefore be turned off independently from the other domains. Each power domain comprises at least one functional module. The number of functional modules in a given power domain is not limited, but is low compared to the total number of functional modules of the system to allow flexible power management.
For example, in a mobile telephone, a functional module dedicated to listening for the beacon radio frequency signal transmitted by the cellular network receives power most of the time. Conversely, a functional module dedicated to reading and decoding audio data in MP3 format may be powered off for a large percentage of the time, when the corresponding function is not requested by the user. This decreases the chip's static power consumption (to which leakage currents also contribute), saving battery power and increasing the autonomy of the device.
Turning off the power to a given domain is decided by the CPU. At the moment when the power to a functional module is cut off, the module could be engaged in a transaction with another functional module without the CPU being aware of this. This is particularly the case for slave modules, which respond directly to requests from master modules.
When a functional module is powered off, a situation may result in which the other functional module continues to wait for a response that will never come. This can cause the system to hang if the communication protocol is not robust against such situations, requiring a complete reinitialization.
U.S. Pat. No. 6,590,907 describes the use of a routing and arbitration logic which is situated in the interconnection bus (called the “packet router” in the document), and which responds to a request addressed by a master module to an additional module, when said additional module is not present at an expansion port where the master module expects it to be connected. The response consists of issuing an error message.
This solution enables the presence of expansion ports for the possible connection of additional functional modules in certain applications of the system, and avoids the system hanging when a request is addressed to a packet router port associated with a functional module which is not present. This provides a solution to a problem which is different than the one the present invention aims to resolve, and also presents difficulties when implemented with a high number of power domains.